home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / File class library / sources / CIsleResFile.c < prev    next >
Text File  |  1992-09-14  |  2KB  |  130 lines

  1. /*
  2.  
  3.   CIsleResFile.c
  4.   Superclass:    CIsleFile
  5.  
  6.      CResFile (Copyright © 1989 Symantec Corporation. All rights reserved.)
  7.       transplanted into CIsleFile
  8.  
  9.   April 2, 1992  isl
  10.   
  11. */
  12.  
  13.  
  14. #include <CIsleResFile.h>
  15.  
  16.  
  17. /*=====================*/
  18. /*===---------------===*/
  19.  
  20. void    CIsleResFile::IResFile()
  21. Begin
  22.     CIsleFile::IIsleFile();
  23.  
  24.     refNum= kNone;
  25. End
  26.  
  27.  
  28. /*===---------------===*/
  29.  
  30. void    CIsleResFile::Open(SignedByte permission)
  31. Begin
  32.     Boolean wasLocked;
  33.     
  34.     ASSERT( IsOpen() == False);
  35.  
  36.     wasLocked= Lock(True);
  37.     refNum= HOpenResFile(volNum, dirID, name, permission);
  38.     Lock(wasLocked);
  39.     
  40.     if (refNum == kFailed)
  41.     {
  42.         refNum= kNone;
  43.         FailResError();
  44.     }
  45. End
  46.  
  47. /*===---------------===*/
  48.  
  49. void    CIsleResFile::Close()
  50. Begin
  51.     if (refNum > kNone)
  52.     {
  53.         CloseResFile(refNum);
  54.         refNum= kNone;
  55.         FailOSErr( FlushVol(Null, volNum) );
  56.     }
  57. End
  58.  
  59. /*===---------------===*/
  60.  
  61. void    CIsleResFile::MakeCurrent()
  62. Begin
  63.     ASSERT( IsOpen());
  64.  
  65.     UseResFile(refNum);
  66. End
  67.  
  68. /*===---------------===*/
  69.  
  70. Boolean    CIsleResFile::IsOpen(void)
  71. Begin
  72.     return refNum != kNone;
  73. End
  74.  
  75. /*===---------------===*/
  76.  
  77. Boolean    CIsleResFile::HasResFork(void)
  78. Begin
  79.     HFileParam    pBlock;
  80.     
  81.     pBlock.ioNamePtr=        name;
  82.     pBlock.ioVRefNum=        volNum;
  83.     pBlock.ioFDirIndex= kNone;
  84.     pBlock.ioDirID=         dirID;
  85.     
  86.     FailOSErr( PBHGetFInfo( (HParmBlkPtr) &pBlock, False));
  87.     
  88.     return pBlock.ioFlRLgLen != kNone;
  89. End
  90.  
  91. /*===---------------===*/
  92.  
  93. void CIsleResFile::CreateNew(OSType creator, OSType type)
  94. Begin
  95.     Boolean wasLocked;
  96.     
  97.     if (!inherited::ExistsOnDisk())
  98.         inherited::CreateNew(creator, type);
  99.     
  100.     wasLocked= Lock(True);
  101.     HCreateResFile(volNum, dirID, name);
  102.     Lock(wasLocked);
  103.     
  104.     FailResError();
  105. End
  106.  
  107. /*===---------------===*/
  108.  
  109. Boolean CIsleResFile::ExistsOnDisk(void)
  110. Begin
  111.     if (inherited::ExistsOnDisk())
  112.         return HasResFork();
  113.     else
  114.         return False;
  115. End
  116.  
  117. /*===---------------===*/
  118.  
  119. void CIsleResFile::Update( void)
  120. Begin
  121.     ASSERT(IsOpen());
  122.     
  123.     UpdateResFile(refNum);
  124.     FailResError();
  125.     
  126.     FailOSErr( FlushVol( Null, volNum) );
  127. End
  128.  
  129. /*===---------------===*/
  130. /*=====================*/